// 购物车仓库
export default{
  namespaced: true,

  state: {
    cartItems: uni.getStorageSync('cartItems')||[],//购物车列表数据
  },

  getters: {
    // 购物车中商品的总数量,tabbar角标
    totalCount(state){//reduce遍历相加
      return state.cartItems.reduce((totl,item)=>totl+item.goods_count,0)
    },
    //选中的商品数量
    jies(state){
   //  const res= state.cartItems.filter(v=>v.goods_state===true)
   //  return  res.reduce((num,item)=num+item.goods_count,0)
   return (state.cartItems || [])
   .filter(item => item?.goods_state)
   .reduce((total, { goods_count = 0 }) => total + goods_count, 0);
    },
     //合计
     ountnu(state){
      //筛选出选中的每一项
    const res = state.cartItems.filter(v=>v.goods_state===true)
    //reduce遍历相加 数量*单价再相加
    return res.reduce((priceall,item)=>priceall+(item.goods_count*item.goods_price),0)
     },
     
  },

  mutations: {
    addToCart(state,item){
        //同样的商品在列表里只能有一项,不能直接push
        // 根据 商品id 查询购物车中是否存在这件商品
      const res = state.cartItems.find(v=>v.goods_id===item.goods_id)
      if(res){
        // 如果购物车中已经有这件商品，则更新当前商品的数量
       res.goods_count++
      }else{
          // 如果购物车中没有这件商品，则添加进去
        state.cartItems.push(item)
      }
      // 将更新后的购物车信息保持到本地缓存中
      uni.setStorageSync('cartItems', state.cartItems)
    },
    //改变选中状态
    changestate(state,item){
      const res = state.cartItems.find(v=>v.goods_id===item.goods_id)
      if(res){
        res.goods_state=!res.goods_state//让选中状态取反
        // 将更新后的购物车信息保持到本地缓存中
        uni.setStorageSync('cartItems',state.cartItems)
      }
    },
    //全选框
    updateAllState(state,checked){
      //遍历让每一项都等于checked
      state.cartItems.forEach(element => {
        element.goods_state=checked
      });
      uni.setStorageSync('cartItems',state.cartItems)
    },
    //修改商品数量
    changecount(state,{item,num}){
    const res =  state.cartItems.find(v=>v.goods_id===item.goods_id)
   res.goods_count=num
   uni.setStorageSync('cartItems',state.cartItems)
    },
    //删除某一项
    removeitem(state,id){
    state.cartItems=  state.cartItems.filter(v=>v.goods_id!==id)
    uni.setStorageSync('cartItems',state.cartItems)
    }
  },

  actions: {},
}